/*
 * @lc app=leetcode.cn id=7 lang=cpp
 *
 * [7] 整数反转
 *
 * https://leetcode-cn.com/problems/reverse-integer/description/
 *
 * algorithms
 * Easy (35.01%)
 * Likes:    2710
 * Dislikes: 0
 * Total Accepted:    658.7K
 * Total Submissions: 1.9M
 * Testcase Example:  '123'
 *
 * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
 *
 * 如果反转后整数超过 32 位的有符号整数的范围 [−2^31,  2^31 − 1] ，就返回 0。
 * 假设环境不允许存储 64 位整数（有符号或无符号）。
 *
 *
 *
 * 示例 1：
 *
 *
 * 输入：x = 123
 * 输出：321
 *
 *
 * 示例 2：
 *
 *
 * 输入：x = -123
 * 输出：-321
 *
 *
 * 示例 3：
 *
 *
 * 输入：x = 120
 * 输出：21
 *
 *
 * 示例 4：
 *
 *
 * 输入：x = 0
 * 输出：0
 *
 *
 *
 *
 * 提示：
 *
 *
 * -2^31
 *
 *
 */

// @lc code=start
class Solution {
  public:
    int reverse(int x) {
        bool t = false;
        if (x == -2147483648)
            return 0;
        if (x < 0) {
            t = true;
            x = -x;
        }
        int solu = 0;
        while (x != 0) {
            if (solu > 2147483647 / 10)
                return 0;
            solu *= 10;
            solu += x % 10;
            x /= 10;
        }

        while (t)
            return -solu;
        return solu;
    }
};
// @lc code=end
